#####################################################################
# $Id: Config.pm,v 1.1.1.1 2006/03/20 04:08:45 jfb Exp $
#
# Config.pm - configuration file routines for Epiphyte
#
#####################################################################

package Epiphyte::Config;

use strict;
use vars qw(@ISA);

use Epiphyte;
use Epiphyte::Log;

@ISA = qw(Exporter);



#####################################################################   
# load - class method
#
# Load a species object from the database.
#####################################################################

sub load
{
	my ($class, $path) = @_;

	my $self = {
		_path	=> $path,
		_vars	=> {},
	};

	bless($self, $class);

	return if (!$self->parse());

	return ($self);
}

#####################################################################   
# getvar() - object method
#
# Retrieve the value of a variable.
#####################################################################

sub getvar
{
	my ($self, $var) = @_;

	return if (!exists($self->{_vars}->{$var}));
	return ($self->{_vars}->{$var});
}

#####################################################################   
# setvar() - object method
#
# Set the value of a variable.
#####################################################################

sub setvar
{
	my ($self, $var, $val) = @_;

	$self->{_vars}->{$var} = $val;

	return 1;
}

#####################################################################   
# parse - object method
#
#####################################################################

sub parse
{
	my ($self) = @_;

	if (!open(CONF, $self->{_path})) {
		Epiphyte->log(LOG_ERR, "failed to open $self->{_path}: $!");
		return;
	}

	while (<CONF>) {
		# First strip all leading and trailing whitespace
		$_ =~ s/^\s*//;
		$_ =~ s/\s*$//;

		# Skip comments
		next if ($_ =~ /^#/);

		if ($_ =~ /^(\w+)\s*=\s*(.*)$/) {
			$self->{_vars}->{$1} = $2;
		}
	}

	close(CONF);

	return ($self);
}

1;
